﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Xml;
using Ext.Net;

namespace ChiDao.Site.Models
{
    public class NavModel
    {
        internal static string NavRoot = "~/";
        //internal static string ConfigXml = "Views//NavConfig.xml";

        //public static NodeCollection GetNavNodes()
        //{
        //    var nodes = new NodeCollection();
        //    string path = HttpContext.Current.Server.MapPath(NavModel.NavRoot);

        //    return NavModel.BuildNavLevel();
        //}

        public static string ApplicationRoot
        {
            get
            {
                string root = HttpContext.Current.Request.ApplicationPath;
                return root == "/" ? "" : root;
            }
        }

        //private static readonly string[] excludeList = { ".svn", "_svn", "Shared" };

        //private static NodeCollection BuildNavLevel()
        //{
        //    string path = HttpContext.Current.Server.MapPath(NavModel.NavRoot);

        //    NodeCollection nodes = new NodeCollection(false);
        //    NavConfig cfg = new NavConfig(path + ConfigXml, nodes);
        //    return nodes;
        //}


        //public class NavConfig
        //{
        //    private string path;
        //    NodeCollection nodes;

        //    public NavConfig(string path, NodeCollection nodes)
        //    {
        //        this.nodes = nodes;
        //        this.path = path;
        //        this.Load();
        //    }

        //    private void Load()
        //    {
        //        this.Description = "No description";
        //        XmlDocument xml = new XmlDocument();

        //        if (File.Exists(path))
        //        {
        //            try
        //            {
        //                xml.Load(path);
        //            }
        //            catch (FileNotFoundException)
        //            {
        //                return;
        //            }
        //        }

        //        XmlNode root = xml.SelectSingleNode("Nav");

        //        if (root == null)
        //        {
        //            return;
        //        }

        //        XmlAttribute iconCls = root.Attributes["iconCls"];

        //        if (iconCls != null)
        //        {
        //            this.IconCls = iconCls.Value;
        //        }

        //        XmlNode desc = root.SelectSingleNode("description");

        //        if (desc != null)
        //        {
        //            this.Description = desc.InnerText;
        //        }

        //        XmlNodeList navItems = root.SelectNodes("NavItems");

        //        if (navItems != null)
        //        {
        //            foreach (XmlNode navItem in navItems)
        //            {
        //                XmlAttribute navNameAttr = navItem.Attributes["name"];
        //                Node pNode = new Node();
        //                if (navNameAttr != null && !string.IsNullOrEmpty(navNameAttr.InnerText))
        //                {
        //                    string name = navNameAttr.InnerText;
        //                    pNode.NodeID = BaseControl.GenerateID();
        //                    pNode.Text = name;
        //                    nodes.Add(pNode);
        //                    pNode.IconCls = this.IconCls;
        //                }


        //                if (navItem.HasChildNodes)
        //                {
        //                    XmlNodeList items = navItem.SelectNodes("Item");
        //                    foreach (XmlNode item in items)
        //                    {
        //                        XmlAttribute itemNameAttr = item.Attributes["name"];
        //                        XmlAttribute urlAttri = item.Attributes["url"];
        //                        if (itemNameAttr != null && !string.IsNullOrEmpty(itemNameAttr.InnerText))
        //                        {
        //                            Node node = new Node();
        //                            string itemName = itemNameAttr.InnerText;
        //                            node.NodeID = BaseControl.GenerateID();
        //                            node.Text = itemName;
        //                            node.IconCls = this.IconCls;
        //                            string url = string.Concat(NavModel.ApplicationRoot, "/", urlAttri.InnerText, "/");
        //                            node.NodeID = "e" + Math.Abs(url.ToLower().GetHashCode());
        //                            node.Href = url;
        //                            node.Leaf = true;

        //                            pNode.Children.Add(node);

        //                        }
        //                    }
        //                }
        //            }
        //        }
        //    }

        //    public string IconCls { get; private set; }

        //    public string Title { get; private set; }

        //    public string Description { get; private set; }

        //}
    }
}
